今天工作太累,晚點補解釋...
(已編輯)
這題dp的使用是逐漸挑選較少的未包含字串,每個dictionary內的string去比較哪個能留下最少的extra characters,也就實現dp的精神:[每個小問題的最佳化即為問題的最佳化]
class Solution {
public:
int minExtraChar(string s, vector<string>& dictionary) {
int dp[51] = {};
int n = s.size();
for(int i = n - 1; i >= 0; i--){
dp[i] = 1 + dp[i + 1];
for(auto &w : dictionary){
if(i + w.size() <= n && s.compare(i, w.size(), w) == 0){
dp[i] = min(dp[i], dp[i + w.size()]);
}
}
}
return dp[0];
}
};